/*
 * @Description: 文件管理
 * @Author:
 * @Date:
 * @LastEditors: denghong
 */


/**
 * 下载文件
 * @param data 二进制文件流
 * @param filename 文件名字
 * @param type 文件类型
 *  */
export function downLoadFile(data, filename, type = 'pdf') {
    // mime 类型 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
    // var blob = new Blob([data], {type: 'application/vnd.ms-excel'})//接收的是blob，若接收的是文件流，需要转化一下
    // 如果blob对象有type，可以不加type
    // var blob = new Blob([data], { type: "application/vnd.ms-excel" });
    var blob = new Blob([data]);
    if (typeof window.chrome !== "undefined") {
        // Chrome version
        var link = document.createElement("a");
        var url = window.URL.createObjectURL(blob);//ie9支持 用于创建 URL 的 File 对象、Blob 对象或者 MediaSource 对象。​
        link.href = url
        link.download = filename + '.' + type;
        link.click();
        window.URL.revokeObjectURL(url); //释放
    } else if (typeof window.navigator.msSaveBlob !== "undefined") {
        // IE version
        blob = new Blob([data], { type: "application/force-download" });
        window.navigator.msSaveBlob(blob, filename + '.' + type);
    } else {
        // Firefox version
        var file = new File([data], filename + '.' + type, { type: "application/force-download", });
        var url = window.URL.createObjectURL(file)
        window.open(url);
        window.URL.revokeObjectURL(url); //释放
    }

}


/**
 * 原生上传文件
 *  */
export function uploadFile() {
    var input = document.createElement("input");
    input.type = "file";
    input.click();
    input.onchange = function () {
        var file = input.files[0];
        // file = new File([file], '11111111111' + '.' + file.name.split('.')[1], { type: file.type });//此处可以修改上传文件名
        var form = new FormData();
        form.append("file", file); //第一个参数是后台读取的请求key值
        form.append("other", "666666"); //实际业务的其他请求参数
        var xhr = new XMLHttpRequest();
        var action = "/upLoadFile"; //上传服务的接口地址
        xhr.open("POST", action);
        xhr.send(form); //发送表单数据
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var resultObj = JSON.parse(xhr.responseText);
                console.log(resultObj);
                //处理返回的数据......
            }
        }
    }
}


/**
 * 转base64 data可以是file和blob
 *  */
export function data2base64(data) {
    var reader = new FileReader();//ie 10 11仅部分支持
    reader.readAsDataURL(data);
    reader.onload = function () {
        return reader.result  //获取到base64格式
    };
}
